package cn.tedu.sp03.user.service;

import cn.tedu.sp01.pojo.User;
import cn.tedu.sp01.service.UserService;
import cn.tedu.web.util.JsonUtil;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@Slf4j
public class UserServiceImpl implements UserService {
    @Value("${sp.user-service.users}")
    private String userJson;

    /**
     * 根据用户Id获取用户信息
     * @param userId 用户Id
     * @return User
     */
    @Override
    public User getUser(Integer userId) {
        log.info("获取用户userId="+userId);
        //userJson-->List<User>
        List<User> users = JsonUtil.from(userJson, new TypeReference<List<User>>() {});
        //java不支持List<User>这种写法,TypeReference是Jackson提供的匿名内部类,这里只要它的泛型,不添加其他代码
        for (User u : users) {
            if (u.getId().equals(userId)){
                return u;
            }
        }
        //找不到用户,也返回一个假的用户数据
        return new User(userId,"用户名"+userId,"密码"+userId);
    }

    /**
     * 增加用户的积分
     * @param userId 给那个用户增加积分
     * @param score 增加多少积分
     */
    @Override
    public void addScore(Integer userId, Integer score) {
        log.info("增加用户积分:userId="+userId+",score="+score);
    }
}
